﻿using eCommerce.core;
using eCommerce.db.DALRespository;

namespace eCommerce.db.BORespository
{
    public class AllSystemBo
    {
        public static int GetStatisticsByType(int storeId, int type)
        {
            return AllSystemDal.GetStatisticsByType(storeId, type);
        }

        // Số lượng trong kho hàng
        public static int Get_TotalQuantity_In_Warehouse_By_Size_Product(int sizeId, int productId)
        {
            return AllSystemDal.GetTotalQuantityInWarehouseOrStoreByTypeStoreSizeProduct(
                    (int) SystemType.Warehouse, Constant.Warehouse, sizeId, productId);
        }

        // Số lượng trong cửa hàng
        public static int GetTotalQuantityInStoreByStoreSizeProduct(int storeId, int sizeId, int productId)
        {
            return AllSystemDal.GetTotalQuantityInWarehouseOrStoreByTypeStoreSizeProduct(
                    (int)SystemType.Store, storeId, sizeId, productId);
        }

        // Số lượng đã bán được tại cửa hàng
        public static int GetTotalQuantityInOrderByStatusStoreSizeProduct(int storeId, int sizeId, int productId)
        {
            return AllSystemDal.GetTotalQuantityInOrderByStatusStoreSizeProduct((int) OrderStatus.Complete, storeId, sizeId, productId);
        }


        //----------------------------------------------------------------------------------------------------------------------------------//
        /// <summary>
        /// Hiển thị kích thước và số lượng tồn trong cửa hàng
        /// </summary>
        /// <param name="storeId">StoreId</param>
        /// <param name="productId">ProductId</param>
        /// <returns>M (10), L (2), S (5)</returns>
        public static string CalcSizeAndQuantityStoreSubOrderByStoreSizeProduct(int storeId, int productId)
        {
            var o = ProductBo.GetById(productId);
            if (o != null && o.SizeType > 0)
            {
                var lstSize = SizeBo.GetListByType(o.SizeType);

                var html = string.Empty;
                for (var i = 0; i < lstSize.Count; i++)
                {
                    var sizeId = lstSize[i].SizeId;
                    var store = Get_TotalQuantity_In_Warehouse_By_Size_Product(sizeId, productId);
                    var order = GetTotalQuantityInOrderByStatusStoreSizeProduct(storeId, sizeId, productId);

                    html += store >= order && store > 0
                                   ? string.Format("<b>{0}</b> (<b class=\"green\">{1}</b>), ", lstSize[i].Name, (store - order))
                                   : string.Empty;
                }

                return !string.IsNullOrEmpty(html) ? html.Substring(0, html.Length - 2) : html;
            }
            return string.Empty;
        }
    }
}
